<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>MiXiM: MultiDimMapping&lt; Interpolator &gt; Class Template Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">MiXiM
   &#160;<span id="projectnumber">2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('a00148.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#friends">Friends</a>  </div>
  <div class="headertitle">
<div class="title">MultiDimMapping&lt; Interpolator &gt; Class Template Reference<div class="ingroups"><a class="el" href="a00519.html">mapping - classes representing mathematical mappings</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="MultiDimMapping" --><!-- doxytag: inherits="Mapping" -->
<p>Implementation of the Mapping-interface which is able to represent arbitrary dimensional instances of Mappings by using a tree-like structure of sub-mappings, each representing the values for one of the dimensions.  
 <a href="a00148.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00300_source.html">MappingUtils.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for MultiDimMapping&lt; Interpolator &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a00887.png" border="0" usemap="#MultiDimMapping_3_01Interpolator_01_4_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for MultiDimMapping&lt; Interpolator &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a00888.png" border="0" usemap="#MultiDimMapping_3_01Interpolator_01_4_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="a00889.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#ae6bc0b889d690c6f0993d0f03a0b159b">MultiDimMapping</a> (const <a class="el" href="a00086.html">DimensionSet</a> &amp;myDims)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain.  <a href="#ae6bc0b889d690c6f0993d0f03a0b159b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a684348697ba51462eccf00c92f99ea64">MultiDimMapping</a> (const <a class="el" href="a00086.html">DimensionSet</a> &amp;myDims, argument_value_cref_t oorv)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain.  <a href="#a684348697ba51462eccf00c92f99ea64"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21647d49bf4759d7e1eac552fa518b43"></a><!-- doxytag: member="MultiDimMapping::MultiDimMapping" ref="a21647d49bf4759d7e1eac552fa518b43" args="(const MultiDimMapping&lt; Interpolator &gt; &amp;o)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a21647d49bf4759d7e1eac552fa518b43">MultiDimMapping</a> (const <a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt; &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy-constructor which assures that the sub-mappings are deep copied instead of only their the pointers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf3d7e794c6e10795a4fa18d6e3b67d0"></a><!-- doxytag: member="MultiDimMapping::operator=" ref="adf3d7e794c6e10795a4fa18d6e3b67d0" args="(const MultiDimMapping&lt; Interpolator &gt; &amp;o)" -->
const <a class="el" href="a00148.html">MultiDimMapping</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#adf3d7e794c6e10795a4fa18d6e3b67d0">operator=</a> (const <a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt; &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy operator which assures that the sub-mappings are deep copied instead of only their the pointers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9694225933d71570d8575dbbad1e55f"></a><!-- doxytag: member="MultiDimMapping::clone" ref="aa9694225933d71570d8575dbbad1e55f" args="() const " -->
virtual <a class="el" href="a00136.html">Mapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#aa9694225933d71570d8575dbbad1e55f">clone</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a deep copy of this mapping instance. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3aab4125df7b412bc7096779593f473"></a><!-- doxytag: member="MultiDimMapping::~MultiDimMapping" ref="af3aab4125df7b412bc7096779593f473" args="()" -->
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#af3aab4125df7b412bc7096779593f473">~MultiDimMapping</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees the memory for the sub mappings. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual argument_value_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a524f27f6b8f01dc973dbe54f0f9c5ed2">getValue</a> (const <a class="el" href="a00013.html">Argument</a> &amp;pos) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of this <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> at position specified by the passed <a class="el" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>.  <a href="#a524f27f6b8f01dc973dbe54f0f9c5ed2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a7b50181a1d5e38902c6468bc739f6aa7">setValue</a> (const <a class="el" href="a00013.html">Argument</a> &amp;pos, argument_value_cref_t value)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes the value of the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> at the specified position.  <a href="#a7b50181a1d5e38902c6468bc739f6aa7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00137.html">MappingIterator</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a903bef6518f96f54537beed48002b5fa">createIterator</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer of a new Iterator which is able to iterate over the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> and can change the value the iterator points to.  <a href="#a903bef6518f96f54537beed48002b5fa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00137.html">MappingIterator</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a2aa6a9a6b64954e20c6ee15f4bfb9925">createIterator</a> (const <a class="el" href="a00013.html">Argument</a> &amp;pos)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer of a new Iterator which is able to iterate over the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> and can change the value the iterator points to.  <a href="#a2aa6a9a6b64954e20c6ee15f4bfb9925"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85e1d7321d200c9505d25419dcfc4783"></a><!-- doxytag: member="MultiDimMapping::getDimension" ref="a85e1d7321d200c9505d25419dcfc4783" args="()" -->
<a class="el" href="a00085.html">Dimension</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a85e1d7321d200c9505d25419dcfc4783">getDimension</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the dimension this instance represents. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-types"></a>
Protected Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a681c187c017568b30ab1f955205642ac"></a><!-- doxytag: member="MultiDimMapping::interpolator_map_type" ref="a681c187c017568b30ab1f955205642ac" args="" -->
typedef <a class="el" href="a00110.html">InterpolateableMap</a><br class="typebreak"/>
&lt; Interpolator&lt; std::map<br class="typebreak"/>
&lt; argument_value_t, <a class="el" href="a00136.html">Mapping</a> * &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a681c187c017568b30ab1f955205642ac">interpolator_map_type</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The templated <a class="el" href="a00110.html" title="Represents a std::map which is able to interpolate.">InterpolateableMap</a> the underlying <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> uses std::map as storage type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f7fa4bf02e759ad62d0f546add33ecd"></a><!-- doxytag: member="MultiDimMapping::interpolator_type" ref="a2f7fa4bf02e759ad62d0f546add33ecd" args="" -->
typedef <br class="typebreak"/>
interpolator_map_type::interpolator_type&#160;</td><td class="memItemRight" valign="bottom"><b>interpolator_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac667e856842caea12a716fe6e4468b23"></a><!-- doxytag: member="MultiDimMapping::mapped_type" ref="ac667e856842caea12a716fe6e4468b23" args="" -->
typedef <br class="typebreak"/>
interpolator_map_type::mapped_type&#160;</td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b0c6123bcf332b028075bbb947bd51f"></a><!-- doxytag: member="MultiDimMapping::mapped_cref_type" ref="a6b0c6123bcf332b028075bbb947bd51f" args="" -->
typedef <br class="typebreak"/>
interpolator_map_type::mapped_cref_type&#160;</td><td class="memItemRight" valign="bottom"><b>mapped_cref_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4958aa116b6ce5b1b93cc1b2c1431a1"></a><!-- doxytag: member="MultiDimMapping::iterator" ref="aa4958aa116b6ce5b1b93cc1b2c1431a1" args="" -->
typedef <br class="typebreak"/>
<a class="el" href="a00109.html">interpolator_map_type::iterator_intpl</a>&#160;</td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93d02248ea48308e7ce69761186aa7b4"></a><!-- doxytag: member="MultiDimMapping::const_iterator" ref="a93d02248ea48308e7ce69761186aa7b4" args="" -->
typedef <br class="typebreak"/>
<a class="el" href="a00057.html">interpolator_map_type::const_iterator_intpl</a>&#160;</td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a9d4b17004ec39759f5876865a27a4f04">MultiDimMapping</a> (const <a class="el" href="a00086.html">DimensionSet</a> &amp;myDims, <a class="el" href="a00085.html">Dimension</a> myDim)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain and the passed dimension as the dimension this instance should represent.  <a href="#a9d4b17004ec39759f5876865a27a4f04"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#aee38eb77b429791423a13e020a3b15fd">MultiDimMapping</a> (const <a class="el" href="a00086.html">DimensionSet</a> &amp;myDims, <a class="el" href="a00085.html">Dimension</a> myDim, <a class="el" href="a00055.html">ConstantSimpleConstMapping</a> *oorm, <a class="el" href="a00061.html">ConstMappingWrapper</a> *wrappedoorm)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain and the passed dimension as the dimension this instance should represent.  <a href="#aee38eb77b429791423a13e020a3b15fd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ac6685b718a771032556e192752c528"></a><!-- doxytag: member="MultiDimMapping::MultiDimMapping" ref="a3ac6685b718a771032556e192752c528" args="(const MultiDimMapping&lt; Interpolator &gt; &amp;o, ConstantSimpleConstMapping *oorm, ConstMappingWrapper *wrappedoorm)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a3ac6685b718a771032556e192752c528">MultiDimMapping</a> (const <a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt; &amp;o, <a class="el" href="a00055.html">ConstantSimpleConstMapping</a> *oorm, <a class="el" href="a00061.html">ConstMappingWrapper</a> *wrappedoorm)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Intern copy-constructor which assures that the sub-mappings are deep copied instead of only their pointers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fbdfd6bd7d903fdd388556ead454461"></a><!-- doxytag: member="MultiDimMapping::createSubSignal" ref="a1fbdfd6bd7d903fdd388556ead454461" args="() const " -->
mapped_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a1fbdfd6bd7d903fdd388556ead454461">createSubSignal</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal helper method which creates a new sub-mapping for this <a class="el" href="a00148.html" title="Implementation of the Mapping-interface which is able to represent arbitrary dimensional instances of...">MultiDimMapping</a> instance. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97c8020122e2d6e275596d77d3025623"></a><!-- doxytag: member="MultiDimMapping::copySubMappings" ref="a97c8020122e2d6e275596d77d3025623" args="()" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>copySubMappings</b> ()</td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50d98bf7c2b8070242694fda40ca49ed"></a><!-- doxytag: member="MultiDimMapping::outOfRangeMapping" ref="a50d98bf7c2b8070242694fda40ca49ed" args="" -->
<a class="el" href="a00055.html">ConstantSimpleConstMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a50d98bf7c2b8070242694fda40ca49ed">outOfRangeMapping</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returned by the Interpolator if the mapping is accessed outside its range (before or after the last key entry in a dimension). <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0623ee0b39d257c2283d4ab6ca9fcf9"></a><!-- doxytag: member="MultiDimMapping::wrappedOORMapping" ref="ac0623ee0b39d257c2283d4ab6ca9fcf9" args="" -->
<a class="el" href="a00061.html">ConstMappingWrapper</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#ac0623ee0b39d257c2283d4ab6ca9fcf9">wrappedOORMapping</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Wraps the out of range mapping which is an instance of <a class="el" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a> inside an instance of <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> which setValue method is asserted to never be called. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3109620ad45efea2104ebc7fa80662f6"></a><!-- doxytag: member="MultiDimMapping::entries" ref="a3109620ad45efea2104ebc7fa80662f6" args="" -->
<a class="el" href="a00148.html#a681c187c017568b30ab1f955205642ac">interpolator_map_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6">entries</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the sub-mappings for the dimension this instance represents. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9678ee0ab7315c97b0748f793acaaac"></a><!-- doxytag: member="MultiDimMapping::myDimension" ref="ae9678ee0ab7315c97b0748f793acaaac" args="" -->
<a class="el" href="a00085.html">Dimension</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac">myDimension</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The dimension this instance represents. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45aeec7eead2c432c971ca02fcdb0c13"></a><!-- doxytag: member="MultiDimMapping::isMaster" ref="a45aeec7eead2c432c971ca02fcdb0c13" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>isMaster</b></td></tr>
<tr><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6314bc1334b489fad95fbc1affbdb57f"></a><!-- doxytag: member="MultiDimMapping::MultiDimMappingIterator&lt; Interpolator &gt;" ref="a6314bc1334b489fad95fbc1affbdb57f" args="" -->
class&#160;</td><td class="memItemRight" valign="bottom"><b>MultiDimMappingIterator&lt; Interpolator &gt;</b></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><h3>template&lt;template&lt; typename &gt; class Interpolator&gt;<br/>
class MultiDimMapping&lt; Interpolator &gt;</h3>

<p>Implementation of the Mapping-interface which is able to represent arbitrary dimensional instances of Mappings by using a tree-like structure of sub-mappings, each representing the values for one of the dimensions. </p>
<p>This class internally uses a map of Mappings two represent one dimension. Where every <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> in the map represents a sub-mapping for the values in the next dimension at that position in the this dimension. These sub-mappings can either be in turn MultiDimMappings with further sub-mappings or they can be TimedMappings if their dimension is the time. The TimedMappings therefore represent the leafs of the tree-like structure.</p>
<dl class="author"><dt><b>Author:</b></dt><dd>Karl Wessel </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a9d4b17004ec39759f5876865a27a4f04"></a><!-- doxytag: member="MultiDimMapping::MultiDimMapping" ref="a9d4b17004ec39759f5876865a27a4f04" args="(const DimensionSet &amp;myDims, Dimension myDim)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::<a class="el" href="a00148.html">MultiDimMapping</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00086.html">DimensionSet</a> &amp;&#160;</td>
          <td class="paramname"><em>myDims</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00085.html">Dimension</a>&#160;</td>
          <td class="paramname"><em>myDim</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain and the passed dimension as the dimension this instance should represent. </p>
<p>Also takes the interpolation method to use, but not yet implemented.</p>
<p>This constructor is only used internally to create the sub-mappings. </p>
<div class="fragment"><pre class="fragment">                                                              :
      <a class="code" href="a00136.html#a4d721f5e319fdcf56b4285d1368795d1" title="Initializes the Mapping with the time dimension as domain.">Mapping</a>(myDims),
      <a class="code" href="a00148.html#a50d98bf7c2b8070242694fda40ca49ed" title="Returned by the Interpolator if the mapping is accessed outside its range (before or after the last k...">outOfRangeMapping</a>(0),
      <a class="code" href="a00148.html#ac0623ee0b39d257c2283d4ab6ca9fcf9" title="Wraps the out of range mapping which is an instance of ConstMapping inside an instance of Mapping whi...">wrappedOORMapping</a>(0),
      <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>(),
      <a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a>(myDim),
      isMaster(<span class="keyword">false</span>) {}
</pre></div>
</div>
</div>
<a class="anchor" id="aee38eb77b429791423a13e020a3b15fd"></a><!-- doxytag: member="MultiDimMapping::MultiDimMapping" ref="aee38eb77b429791423a13e020a3b15fd" args="(const DimensionSet &amp;myDims, Dimension myDim, ConstantSimpleConstMapping *oorm, ConstMappingWrapper *wrappedoorm)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::<a class="el" href="a00148.html">MultiDimMapping</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00086.html">DimensionSet</a> &amp;&#160;</td>
          <td class="paramname"><em>myDims</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00085.html">Dimension</a>&#160;</td>
          <td class="paramname"><em>myDim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00055.html">ConstantSimpleConstMapping</a> *&#160;</td>
          <td class="paramname"><em>oorm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00061.html">ConstMappingWrapper</a> *&#160;</td>
          <td class="paramname"><em>wrappedoorm</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain and the passed dimension as the dimension this instance should represent. </p>
<p>Also takes the interpolation method to use, but not yet implemented.</p>
<p>This constructor is only used internally to create the sub-mappings. </p>
<div class="fragment"><pre class="fragment">                                           :
      <a class="code" href="a00136.html#a4d721f5e319fdcf56b4285d1368795d1" title="Initializes the Mapping with the time dimension as domain.">Mapping</a>(myDims),
      <a class="code" href="a00148.html#a50d98bf7c2b8070242694fda40ca49ed" title="Returned by the Interpolator if the mapping is accessed outside its range (before or after the last k...">outOfRangeMapping</a>(oorm),
      <a class="code" href="a00148.html#ac0623ee0b39d257c2283d4ab6ca9fcf9" title="Wraps the out of range mapping which is an instance of ConstMapping inside an instance of Mapping whi...">wrappedOORMapping</a>(wrappedoorm),
      <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>(<a class="code" href="a00148.html#ac0623ee0b39d257c2283d4ab6ca9fcf9" title="Wraps the out of range mapping which is an instance of ConstMapping inside an instance of Mapping whi...">wrappedOORMapping</a>),
      <a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a>(myDim),
      isMaster(<span class="keyword">false</span>) {}
</pre></div>
</div>
</div>
<a class="anchor" id="ae6bc0b889d690c6f0993d0f03a0b159b"></a><!-- doxytag: member="MultiDimMapping::MultiDimMapping" ref="ae6bc0b889d690c6f0993d0f03a0b159b" args="(const DimensionSet &amp;myDims)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::<a class="el" href="a00148.html">MultiDimMapping</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00086.html">DimensionSet</a> &amp;&#160;</td>
          <td class="paramname"><em>myDims</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain. </p>
<p>Also takes the interpolation-method but is not used yet. </p>
<div class="fragment"><pre class="fragment">                                             :
    <a class="code" href="a00136.html#a4d721f5e319fdcf56b4285d1368795d1" title="Initializes the Mapping with the time dimension as domain.">Mapping</a>(myDims),
    <a class="code" href="a00148.html#a50d98bf7c2b8070242694fda40ca49ed" title="Returned by the Interpolator if the mapping is accessed outside its range (before or after the last k...">outOfRangeMapping</a>(0),
    <a class="code" href="a00148.html#ac0623ee0b39d257c2283d4ab6ca9fcf9" title="Wraps the out of range mapping which is an instance of ConstMapping inside an instance of Mapping whi...">wrappedOORMapping</a>(0),
    <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>(),
    <a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a>(),
    isMaster(<span class="keyword">true</span>){

    <a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a> = *(<a class="code" href="a00058.html#a009539b72014b7bed96402a5c244fca5" title="The dimensions of this mappings domain.">dimensions</a>.rbegin());
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a684348697ba51462eccf00c92f99ea64"></a><!-- doxytag: member="MultiDimMapping::MultiDimMapping" ref="a684348697ba51462eccf00c92f99ea64" args="(const DimensionSet &amp;myDims, argument_value_cref_t oorv)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::<a class="el" href="a00148.html">MultiDimMapping</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00086.html">DimensionSet</a> &amp;&#160;</td>
          <td class="paramname"><em>myDims</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">argument_value_cref_t&#160;</td>
          <td class="paramname"><em>oorv</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initializes the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with the passed <a class="el" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> as domain. </p>
<p>Also takes the interpolation-method but is not used yet. </p>
<div class="fragment"><pre class="fragment">                                                                         :
    <a class="code" href="a00136.html#a4d721f5e319fdcf56b4285d1368795d1" title="Initializes the Mapping with the time dimension as domain.">Mapping</a>(myDims),
    <a class="code" href="a00148.html#a50d98bf7c2b8070242694fda40ca49ed" title="Returned by the Interpolator if the mapping is accessed outside its range (before or after the last k...">outOfRangeMapping</a>(<span class="keyword">new</span> <a class="code" href="a00055.html" title="Represents a constant mathematical mapping (f(x) = c)">ConstantSimpleConstMapping</a>(myDims, oorv)),
    <a class="code" href="a00148.html#ac0623ee0b39d257c2283d4ab6ca9fcf9" title="Wraps the out of range mapping which is an instance of ConstMapping inside an instance of Mapping whi...">wrappedOORMapping</a>(<span class="keyword">new</span> <a class="code" href="a00061.html" title="Wraps an ConstMapping into a Mapping interface.">ConstMappingWrapper</a>(<a class="code" href="a00148.html#a50d98bf7c2b8070242694fda40ca49ed" title="Returned by the Interpolator if the mapping is accessed outside its range (before or after the last k...">outOfRangeMapping</a>)),
    <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>(<a class="code" href="a00148.html#ac0623ee0b39d257c2283d4ab6ca9fcf9" title="Wraps the out of range mapping which is an instance of ConstMapping inside an instance of Mapping whi...">wrappedOORMapping</a>),
    <a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a>(),
    isMaster(<span class="keyword">true</span>) {

    <a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a> = *(<a class="code" href="a00058.html#a009539b72014b7bed96402a5c244fca5" title="The dimensions of this mappings domain.">dimensions</a>.rbegin());
  }
</pre></div>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a903bef6518f96f54537beed48002b5fa"></a><!-- doxytag: member="MultiDimMapping::createIterator" ref="a903bef6518f96f54537beed48002b5fa" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00137.html">MappingIterator</a>* <a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::createIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a pointer of a new Iterator which is able to iterate over the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> and can change the value the iterator points to. </p>
<p>The caller of this method has to delete the Iterator if not needed anymore. </p>

<p>Implements <a class="el" href="a00136.html#ab78335a7a119893d1e04495f7f587ca3">Mapping</a>.</p>

<p>Reimplemented in <a class="el" href="a00090.html#a13d1a4a5fbf6e7a1915b010d63ffc4d0">FilledUpMapping</a>.</p>
<div class="fragment"><pre class="fragment">                                            {
    <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="a00149.html" title="Implementation of the MappingIterator-interface which is able to iterate over every value in a MultiD...">MultiDimMappingIterator&lt;Interpolator&gt;</a>(*this);
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a2aa6a9a6b64954e20c6ee15f4bfb9925"></a><!-- doxytag: member="MultiDimMapping::createIterator" ref="a2aa6a9a6b64954e20c6ee15f4bfb9925" args="(const Argument &amp;pos)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00137.html">MappingIterator</a>* <a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::createIterator </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00013.html">Argument</a> &amp;&#160;</td>
          <td class="paramname"><em>pos</em></td><td>)</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a pointer of a new Iterator which is able to iterate over the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> and can change the value the iterator points to. </p>
<p>The caller of this method has to delete the Iterator if not needed anymore. </p>

<p>Implements <a class="el" href="a00136.html#a8723ba0f78d2f259f1f150c9db346cb2">Mapping</a>.</p>

<p>Reimplemented in <a class="el" href="a00090.html#ac05ee0f09361957877cde397b66b028b">FilledUpMapping</a>.</p>
<div class="fragment"><pre class="fragment">                                                               {
    <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="a00149.html" title="Implementation of the MappingIterator-interface which is able to iterate over every value in a MultiD...">MultiDimMappingIterator&lt;Interpolator&gt;</a>(*<span class="keyword">this</span>, pos);
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a524f27f6b8f01dc973dbe54f0f9c5ed2"></a><!-- doxytag: member="MultiDimMapping::getValue" ref="a524f27f6b8f01dc973dbe54f0f9c5ed2" args="(const Argument &amp;pos) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">virtual argument_value_t <a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::getValue </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00013.html">Argument</a> &amp;&#160;</td>
          <td class="paramname"><em>pos</em></td><td>)</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the value of this <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> at position specified by the passed <a class="el" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>. </p>
<p>Has logarithmic complexity over the number of dimensions and the number of entries per dimension. </p>

<p>Implements <a class="el" href="a00058.html#afabbd15bb8f50e45901f99633d0a47c9">ConstMapping</a>.</p>
<div class="fragment"><pre class="fragment">                                                               {
    assert(pos.<a class="code" href="a00013.html#a0e9998020362333915af80cde79df9e6" title="Returns true if this Argument has a value for the passed Dimension.">hasArgVal</a>(<a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a>));
    argument_value_cref_t                        argVal = pos.<a class="code" href="a00013.html#a137a911de0281cbb519fe13727aa0813" title="Returns the value for the specified dimension.">getArgValue</a>(<a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a>);
    <span class="keyword">typename</span> <a class="code" href="a00110.html#a4c406f0681ae69646e492c3131786189" title="typedef for the returned Interpolated value of this class.">interpolator_map_type::interpolated</a> subM   = <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>.getIntplValue(argVal);

    <span class="keywordflow">if</span>(!(*subM))
      <span class="keywordflow">return</span> <a class="code" href="a00013.html#a8523627cdc70492e5e0935b9a3a78cc4" title="Zero value of a Argument value.">Argument::MappedZero</a>;

    <span class="keywordflow">return</span> (*subM)-&gt;getValue(pos);
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a7b50181a1d5e38902c6468bc739f6aa7"></a><!-- doxytag: member="MultiDimMapping::setValue" ref="a7b50181a1d5e38902c6468bc739f6aa7" args="(const Argument &amp;pos, argument_value_cref_t value)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename &gt; class Interpolator&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="a00148.html">MultiDimMapping</a>&lt; Interpolator &gt;::setValue </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00013.html">Argument</a> &amp;&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">argument_value_cref_t&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Changes the value of the <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> at the specified position. </p>
<p>Has logarithmic complexity over the number of dimensions and the number of entries per dimension. </p>
<div class="fragment"><pre class="fragment">                                                                          {
    argument_value_cref_t                    argVal = pos.<a class="code" href="a00013.html#a137a911de0281cbb519fe13727aa0813" title="Returns the value for the specified dimension.">getArgValue</a>(<a class="code" href="a00148.html#ae9678ee0ab7315c97b0748f793acaaac" title="The dimension this instance represents.">myDimension</a>);
    <span class="keyword">typename</span> interpolator_map_type::iterator posIt  = <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>.lower_bound(argVal);

    <span class="keywordflow">if</span>(posIt == <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>.end() || (<a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>.key_comp()(argVal, posIt-&gt;first))) {
      posIt = <a class="code" href="a00148.html#a3109620ad45efea2104ebc7fa80662f6" title="Stores the sub-mappings for the dimension this instance represents.">entries</a>.insert(posIt, std::make_pair(argVal, <a class="code" href="a00148.html#a1fbdfd6bd7d903fdd388556ead454461" title="Internal helper method which creates a new sub-mapping for this MultiDimMapping instance.">createSubSignal</a>()));
    }
    posIt-&gt;second-&gt;setValue(pos, value);
  }
</pre></div>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>D:/Projects/MiXiM/extsrc/mixim/src/base/phyLayer/<a class="el" href="a00300_source.html">MappingUtils.h</a></li>
</ul>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="a00148.html">MultiDimMapping</a>      </li>

    <li class="footer">Generated on Tue Mar 5 2013 21:26:32 for MiXiM by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
